package ebj.common.document_create;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;

import com.itextpdf.text.BadElementException;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

public class GeneratePDF {
    public static void main(String[] args) throws MalformedURLException,
            IOException, DocumentException {
        Document pdfDoc = new Document();
        // 将要生成的 pdf 文件的路径输出流
        FileOutputStream pdfFile = new FileOutputStream(new File(
                "D:\\tmp\\documents\\firstPdf.pdf"));

        // pdf 文件中的一个文字段落
        Paragraph paragraph = new Paragraph(
                "My first PDF file with an image ...");
        Image image = Image
                .getInstance("D:\\workspace\\jee_luna\\jse-common\\osi_keyhole_300X300_90ppi_0.png");

//        image.scaleAbsolute(30, 30);
        image.scalePercent(20); // 显示原图片大小的20%
        image.setAlignment(Image.MIDDLE); // 设置图片在文档中的对齐方式
        /*
         * 当参数alignment为Image.TEXTWRAP、Image.UNDERLYING分别 指文字绕图形显示、图形作为文字的背景显示。
                            这两种参数可以结合以达到预期的效果，
                            如setAlignment(Image.RIGHT|Image.TEXTWRAP)
                            显示的效果为图像右对齐，文字围绕图像显示。
                            设置图像旋转一定的角度；参数arg为弧度，而不是角度
           image.setRotation(float arg);
         */
        // 用 Document 对象、File 对象获得 PdfWriter 输出流对象
        PdfWriter.getInstance(pdfDoc, pdfFile);
        pdfDoc.open(); // 打开 Document 文档

        // 添加一个文字段落、一张图片
        pdfDoc.add(paragraph);
        pdfDoc.add(image);

        pdfDoc.close();
    }
}
